package com.santiao.fuel.utils.UnitConverter;


import java.math.BigDecimal;

/**
 * 速度单位转换的工具类
 */
public class SpeedUnitConverter
{


    //======================================


    /**
     * 速度单位之间的换算
     *
     * @param preUnitText 换算之前的单位
     * @param endUnitText 换算之后的单位
     */
    public static BigDecimal unitChangeWithSpeed(String preUnitText, String endUnitText , BigDecimal bigDecimal) {
        if ("米/秒".equals(preUnitText)) {
            switch (endUnitText) {
                case "千米/秒":
                    bigDecimal = bigDecimal.divide(new BigDecimal(1000));
                    break;
                case "千米/小时":
                    bigDecimal = bigDecimal.multiply(new BigDecimal(3600)).divide(new BigDecimal(1000));
                    break;
                case "光速":
                    bigDecimal = bigDecimal.divide(new BigDecimal("299792458"));
                    break;
                case "马赫":
                    bigDecimal = bigDecimal.divide(new BigDecimal(343));
                    break;
                case "英里/时":
                    bigDecimal = bigDecimal.multiply(new BigDecimal(2.23694));
                    break;
                case "英寸/秒":
                    bigDecimal = bigDecimal.multiply(new BigDecimal(39.3701));
                    break;
                case "米/秒":
                    // 无需转换
                    break;
            }
        } else if ("千米/秒".equals(preUnitText)) {
            switch (endUnitText) {
                case "米/秒":
                    bigDecimal = bigDecimal.multiply(new BigDecimal(1000));
                    break;
                case "千米/小时":
                    bigDecimal = bigDecimal.multiply(new BigDecimal(3600));
                    break;
                case "光速":
                    bigDecimal = bigDecimal.divide(new BigDecimal("299792.458"));
                    break;
                case "马赫":
                    bigDecimal = bigDecimal.multiply(new BigDecimal(1000)).divide(new BigDecimal(343));
                    break;
                case "英里/时":
                    bigDecimal = bigDecimal.multiply(new BigDecimal(2236.94));
                    break;
                case "英寸/秒":
                    bigDecimal = bigDecimal.multiply(new BigDecimal(39370.1));
                    break;
                case "千米/秒":
                    // 无需转换
                    break;
            }
        } else if ("千米/小时".equals(preUnitText)) {
            switch (endUnitText) {
                case "米/秒":
                    bigDecimal = bigDecimal.divide(new BigDecimal(3.6));
                    break;
                case "千米/秒":
                    bigDecimal = bigDecimal.divide(new BigDecimal(3600));
                    break;
                case "光速":
                    bigDecimal = bigDecimal.divide(new BigDecimal("1079252848.8"));
                    break;
                case "马赫":
                    bigDecimal = bigDecimal.divide(new BigDecimal(1225.044));
                    break;
                case "英里/时":
                    bigDecimal = bigDecimal.multiply(new BigDecimal(0.621371));
                    break;
                case "英寸/秒":
                    bigDecimal = bigDecimal.multiply(new BigDecimal(10.9361));
                    break;
                case "千米/小时":
                    // 无需转换
                    break;
            }
        } else if ("光速".equals(preUnitText)) {
            switch (endUnitText) {
                case "米/秒":
                    bigDecimal = bigDecimal.multiply(new BigDecimal("299792458"));
                    break;
                case "千米/秒":
                    bigDecimal = bigDecimal.multiply(new BigDecimal("299792.458"));
                    break;
                case "千米/小时":
                    bigDecimal = bigDecimal.multiply(new BigDecimal("1079252848.8"));
                    break;
                case "马赫":
                    bigDecimal = bigDecimal.multiply(new BigDecimal("880970.713"));
                    break;
                case "英里/时":
                    bigDecimal = bigDecimal.multiply(new BigDecimal("670616629.3844"));
                    break;
                case "英寸/秒":
                    bigDecimal = bigDecimal.multiply(new BigDecimal("11802852677.165"));
                    break;
                case "光速":
                    // 无需转换
                    break;
            }
        } else if ("马赫".equals(preUnitText)) {
            switch (endUnitText) {
                case "米/秒":
                    bigDecimal = bigDecimal.multiply(new BigDecimal(343));
                    break;
                case "千米/秒":
                    bigDecimal = bigDecimal.multiply(new BigDecimal(343)).divide(new BigDecimal(1000));
                    break;
                case "千米/小时":
                    bigDecimal = bigDecimal.multiply(new BigDecimal(1225.044));
                    break;
                case "光速":
                    bigDecimal = bigDecimal.divide(new BigDecimal("880970.713"));
                    break;
                case "英里/时":
                    bigDecimal = bigDecimal.multiply(new BigDecimal(761.207));
                    break;
                case "英寸/秒":
                    bigDecimal = bigDecimal.multiply(new BigDecimal(13529.146));
                    break;
                case "马赫":
                    // 无需转换
                    break;
            }
        } else if ("英里/时".equals(preUnitText)) {
            switch (endUnitText) {
                case "米/秒":
                    bigDecimal = bigDecimal.divide(new BigDecimal(2.23694));
                    break;
                case "千米/秒":
                    bigDecimal = bigDecimal.divide(new BigDecimal(2236.94));
                    break;
                case "千米/小时":
                    bigDecimal = bigDecimal.divide(new BigDecimal(0.621371));
                    break;
                case "光速":
                    bigDecimal = bigDecimal.divide(new BigDecimal("670616629.3844"));
                    break;
                case "马赫":
                    bigDecimal = bigDecimal.divide(new BigDecimal(761.207));
                    break;
                case "英寸/秒":
                    bigDecimal = bigDecimal.multiply(new BigDecimal(17.6));
                    break;
                case "英里/时":
                    // 无需转换
                    break;
            }
        } else if ("英寸/秒".equals(preUnitText)) {
            switch (endUnitText) {
                case "米/秒":
                    bigDecimal = bigDecimal.divide(new BigDecimal(39.3701));
                    break;
                case "千米/秒":
                    bigDecimal = bigDecimal.divide(new BigDecimal(39370.1));
                    break;
                case "千米/小时":
                    bigDecimal = bigDecimal.divide(new BigDecimal(10.9361));
                    break;
                case "光速":
                    bigDecimal = bigDecimal.divide(new BigDecimal("11802852677.165"));
                    break;
                case "马赫":
                    bigDecimal = bigDecimal.divide(new BigDecimal(13529.146));
                    break;
                case "英里/时":
                    bigDecimal = bigDecimal.divide(new BigDecimal(17.6));
                    break;
                case "英寸/秒":
                    // 无需转换
                    break;
            }
        }

        return bigDecimal;
    }

}
